/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.websai.servlets;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;

/**
 *
 * @author Eduardo
 */
public class RecibeFiles extends HttpServlet {

   
  
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
          out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet RecibeFiles</title>");  
            out.println("</head>");
            out.println("<body>");
           
            out.println("<h1>Servlet RecibeFiles</h1>");
            // out.println("<h1>Servlet RecibeFiles at " + request.getContextPath () + "</h1>");

            System.out.println("Comenzamos procesamiento ficheros");
           out.println("<p>Comenzamos procesamiento ficheros</p>");
            //out.println("</body>");
            //out.println("</html>");

           try{
               DiskFileItemFactory factory = new DiskFileItemFactory();
               ServletFileUpload sfu = new ServletFileUpload(factory);
               out.println("<p> Objetos creados </p>");
               System. out.println("se crearon los objetos");


               int thr = 1024 * 64;//64KBytes
               factory.setSizeThreshold(thr);
               out.println("<p>Limite de memoria  " + thr + "</p>");
               System.out.println("Limite de memoria  " + thr);

               int sm = 1024 * 1024 * 2;
               sfu.setSizeMax(sm);
               out.println("<p>Limite de tamaño" + sm + "</p>");
               System.out.println("limite de tamaño" + sm );

               List fileItems = sfu.parseRequest(request);
               if(fileItems==null){
               out.println("<p>Lsta bacia </p>");
               System.out.println("lista vacia");
               }else{
                   out.println("<p>resibimos:"+fileItems.size()+"</p)");
               System.out.println("limite de tamaño" + fileItems.size() );
               }
                FileItem parametroActual = null;
           for(Object item : fileItems){
               parametroActual=(FileItem)item;
           if(parametroActual.isFormField()){
               //es un dato
               out.println("<p>dato recibido:"+parametroActual.getFieldName()
                       +"-"+parametroActual.getString()+"</p)");
               System.out.println("dato recibido" +parametroActual.getFieldName()
                       +"-"+parametroActual.getString());
              }else{
                   // es un archivoo
                   out.println("<p>archivo recibido:"+parametroActual.getName()
                       +"</p)");
               System.out.println("archivo recibido " +parametroActual.getName());

               File archivo = new File(parametroActual.getName());
                   archivo = new File("C:\\archivo\\"+archivo.getName());
                   out.println("<p>archivo creadoo:");

                   parametroActual.write(archivo);
                    out.println("<p>archivo guardado:");


              }
               
               }
            }
           catch(Exception ex)
           {
               out.println("Errror:" + ex.getMessage());
               System. out.println("Errror:" + ex.getMessage());

           }
           
            
        } finally { 
            out.close();
        }
    } 
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /** 
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /** 
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
